CUR_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
include .header.mk

all: premak makeself postmak
clean: cleanself

premak::
	@set -e
	@ [ -d $(DEP_DIR) ] || mkdir $(DEP_DIR)
	@ [ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR)
	@ [ -d $(BIN_DIR) ] || mkdir $(BIN_DIR)
	@ [ -d $(LIB_DIR) ] || mkdir $(LIB_DIR)
	@ [ -d $(DOC_DIR) ] || mkdir $(DOC_DIR)




OUTPUT    = myIptraf
CPPFLAGS  = $(CFLAGS)
LDLIBS    = -lpthread -llog4c -lzookeeper_mt -lhiredis -lpcap

makeself: $(OUTPUT)
OBJS      = global.o zkprofile.o logger.o redisoper.o main.o
OBJECTS   = $(patsubst %,$(OBJ_DIR)/%,$(OBJS))
DEPS      = $(subst $(OBJ_DIR),$(DEP_DIR),$(OBJECTS:%.o=%.d))

$(OUTPUT) : $(OBJECTS)
	$(LINK) -o $(BIN_DIR)/$@ $^ $(LDFLAGS) $(LDLIBS)

postmak::
	@set +e

cleanself::
	rm -f $(DEPS)
	rm -f $(OBJECTS)
	rm -f $(BIN_DIR)/$(OUTPUT)

ifneq ($(MAKECMDGOALS), clean)
  -include $(DEPS)
endif

include .footer.mk

sonar: sonar_cppcheck sonar_vera sonar_rats sonar_coverage sonar_sonar

sonar_cppcheck:
	cppcheck -v --enable=all --xml -I$(INC_DIR) $(SRC_DIR) 2> $(OBJ_DIR)/cppcheck-report.xml

sonar_vera:
	find $(SRC_DIR) -regex ".*\.c\|.*\.h" | vera++ - -s -d -c $(OBJ_DIR)/vera++-report.xml

sonar_rats:
	rats -w 3 --xml $(SRC_DIR) > $(OBJ_DIR)/rats-report.xml

sonar_tests:
	valgrind --xml=yes --xml-file=$(BUILD_DIR)/valgrind-report.xml $(BIN_DIR)/myIptrafic --gtest_output=xml:$(BIN_DIR)/xunit-report.xml

sonar_coverage:
	gcovr -x -r . > $(OBJ_DIR)/gcovr-report.xml

sonar_sonar:
	sonar-scanner -X
